package app.species;

import java.awt.Color;
import java.io.Serializable;

import javax.annotation.Generated;

public class CreatureContext implements Serializable {

	protected static long serialVersionUID = 1L;
	static SpeciesSim sSim;
	
	@Parameter
	static double CREATURE_DEFAULT_DIAMETER = 75.0;
	
	@Parameter
	static double DEFAULT_SENSE_DIST = 75.0;
	
	@Parameter(name = "CREATURE_DEFAULT_SPEED")
	static double DEFAULT_SPEED = 10.0;
	
	@Parameter
	static int DEFAULT_LIFE_SPAN = 1000;
	
	@Parameter
	static int DEFAULT_NUM_ACTIONS = 4;

	@Parameter
	static int SHOW_MATING_ALERT_TIME = 50;
	
	@Parameter
	static boolean CREATURE_SHOW_SENSOR = false;
	
	@Parameter
	static int VISION_DIVISIONS = 3;
	
	@Parameter
	static double SHARP_ANGLE_TURN = 0.05;
	
	@Parameter
	static double WIDE_ANGLE_TURN = 0.025;
		
	@Parameter
	static int MATING_ENERGY_THRESHOLD = 10000;
	
	@Parameter
	static int ASEXUAL_MATE_THRESHOLD = 20000;
	
	@Parameter
	static int BABY_STARTING_ENERGY = 5000;
	
	@Parameter
	static Color[] speciesColors = new Color[] {};
	
	@Parameter
	static String matingRestriction = "";
	
	@Parameter
	static boolean canSeeOtherCreatures = false;
	
	@Parameter
	static String inputToBrainType = "";

	
	
	
	
	public static void setVisionDivisions(int n) {
		CreatureContext.VISION_DIVISIONS = n;
	}

	public static int numVisionDivisions() {
		return CreatureContext.VISION_DIVISIONS;
	}

	public static int numInputsToBrain() {
		return (CreatureContext.VISION_DIVISIONS + 1) * 3;

	}

	public static void setMatingEnergyThreshold(int n) {
		CreatureContext.MATING_ENERGY_THRESHOLD = n;
	}

	public static void setAsexualMatingThreshold(int n) {
		CreatureContext.ASEXUAL_MATE_THRESHOLD = n;
	}

	public static void setSharpAngleTurn(double d) {
		CreatureContext.SHARP_ANGLE_TURN = d;
	}

	public static void setWideAngleTurn(double d) {
		CreatureContext.WIDE_ANGLE_TURN = d;
	}

	public static void setMatingRestriction(String str) {
		CreatureContext.matingRestriction = str;
	}

	public static void setSpeciesColors(Color[] arr) {
		CreatureContext.speciesColors = arr;
	}

	public static void setCanSeeOtherCreatures(boolean b) {
		CreatureContext.canSeeOtherCreatures = b;
	}

	public static void setSpeciesSimReference(SpeciesSim sim) {
		CreatureContext.sSim = sim;
	}

	public static void setInputToBrainType(String str) {
		CreatureContext.inputToBrainType = str;
	}

	public static int numDefaultActions() {
		return CreatureContext.DEFAULT_NUM_ACTIONS;
	}

}
